package com.itheima.controller;



import com.itheima.entity.Dept;
import com.itheima.entity.Result;
import com.itheima.service.DeptService;
import com.itheima.service.DeptServiceImpl;
import jakarta.annotation.Resource;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;


/**
 * 请求处理类
 */
// @Component      //注意： @Controller不能用@Component 代替
@RestController     //等价于@Controller+@ResponseBody
// @Controller
// @ResponseBody        //作用：将返回的对象或者集合自动转换成json格式返回，
public class DeptController {

    /**
     * 部门列表查询
     * @return
     */
//     @RequestMapping("/depts")
//     public List<Dept> getAll(){
//         //1.加载并读取dept.txt文件
//         //通过类加载器，可以获取到类路径下的所有资源
//         InputStream input = this.getClass().getClassLoader().getResourceAsStream("dept.txt");
//
//         List<String> strings = IOUtils.readLines(input, "UTF-8");
//
//         //2.解析文本中的数据，并将其封装成集合List<Dept>
//         List<Dept> depts =  strings.stream().map((str)->{
//             String[] parts = str.split(",");
//             Integer id = Integer.valueOf(parts[0]);
//             String name = parts[1];
//             LocalDateTime updateTime = LocalDateTime.parse(parts[2], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//             return new Dept(id, name, updateTime);
//         }).toList();
//
//         // List<Dept> depts = new ArrayList<>();
//         // for (String str : strings) {
//         //     String[] parts = str.split(",");
//         //     Integer id = Integer.valueOf(parts[0]);
//         //     String name = parts[1];
//         //     LocalDateTime updateTime = LocalDateTime.parse(parts[2], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//         //     Dept dept = new Dept(id, name, updateTime);
//         //     depts.add(dept);
//         // }
//
//         //3.响应数据（json格式）
//         return depts;
//     }

     //@RequestMapping(value = "/depts", method = RequestMethod.GET)
//     @GetMapping("/depts")       //限制请求方式为Get
//     public Result getAll(){
//         //1.加载并读取dept.txt文件
//         //通过类加载器，可以获取到类路径下的所有资源
//         InputStream input = this.getClass().getClassLoader().getResourceAsStream("dept.txt");
//         List<String> strings = IOUtils.readLines(input, "UTF-8");
//
//         //2.解析文本中的数据，并将其封装成集合List<Dept>
//         List<Dept> depts =  strings.stream().map((str)->{
//             String[] parts = str.split(",");
//             Integer id = Integer.valueOf(parts[0]);
//             String name = parts[1];
//             LocalDateTime updateTime = LocalDateTime.parse(parts[2], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//             return new Dept(id, name, updateTime, updateTime);
//         }).toList();
//
//         //3.响应数据（json格式）
//         return Result.success(depts);
//     }

     //private DeptService deptService = new DeptServiceImpl();

    // @Autowired  //从IOC容器中，自动寻找bean对象，为该变量赋值---依赖注入DI的实现【根据类型注入】
    // @Qualifier("service2")  //根据bean的名字注入

    @Resource(name = "deptServiceImpl") //根据bean的名字注入对象，等价于 @Autowired+@Qualifier
    private DeptService deptService;

    @GetMapping("/depts")       //限制请求方式为Get
    public Result list(){
        //1.调用service，获取数据
        List<Dept> depts = deptService.list();

        //3.响应数据（json格式）
        return Result.success(depts);
    }
}